object Main {
  def main(args: Array[String]): Unit = {
    println("Hello, world!") //print("Hello, world!\n")
    /* Scala强定义类型
     * 变量声明关键字
     * * var：声明变量可变
     * * val：声明变量不可变
     * 使用方法，创建值
     * * val 变量名：数据类型 = 值
     * * var 变量名：数据类型 = 值
     * * 例如：
     * * * var a: Int = 1
     * * * val b: Int = 2
     * 数据类型
     * * Int：整数类型
     * * Boolean：布尔类型
     * * Float：浮点类型
     * * Double：双精度浮点类型
     * * Char：字符类型
     * * String：字符串类型
     * * * " "：字符串；' '：字符
     * * Unit：无返回值类型
     * * Null：空类型
     * * Nothing：空类型
     */
    var a: Int = 1
    val b: Int = 2
    //Scala具有非常强悍的能力：自推导能力
    var c = 'd'
    //在Scala当中一切皆为对象
    println(a.equals(b))
    //for、if都具有返回值
    var d = if (a == b) {
      println("a == b")
      'a'
    } else {
      println("a != b")
      2
    }
    println(d)

    //基本if使用
    if (a >= b) {
      println("a >= b")
    } else if (a <= b) {
      println("a <= b")
    } else {
      println("a == b")
    }

    //基本for循环
    //i <- 1 to 10 [1,10]
    for (i <- 1 to 10) {
      println("for loop: " + i)
    }
    //until表示左闭右开[1,10)
    for (i <- 1 until 10) {
      println(s"for loop until: $i")
    }

    //使用过滤迭代器操作
    //1到10当中，偶数输出
    //%：取余
    for (i <- 1 to 10){
      if (i % 2 == 0) {
        println(s"for loop: $i")
      }
    }
    /* 在java中，调用方法、函数：对象.方法(参数)
     * 在Scala中，一切皆为对象，对象 方法 参数 方法 参数 方法 参数……
     * 如果参数较多，记得+()
    */
    for (i <- 1 to 10 if i % 2 == 0) {
      println(s"for loop: $i")
    }
    //for中的by操作，by：步长
    for(i <- 1 to 20 by 5){
      println("输出i时，步长为5：" + i)
    }

    //while循环
    var count = 0
    while (count <= 10){
      println("count当前的数值为：" + count)
      count += 1
    }

    //打印九九乘法表
    /*
     * 方法格式：
     * def 方法名(变量名: 变量类型): 返回值类型 = { 方法体 }
     * 本质上来说，方法就是一个变量
     */
    def Table(Tail: Int): Unit = {
      for (i <- 1 to Tail) {
        for (j <- 1 to i) {
          //          print(j + "*" + i + "=" + i * j + "\t")
          print(s"$j * $i = ${i*j} \t")
        }
        println()
      }
    }

    Table(99)

    def Sum_Two(i: Int , j: Int): Int = {
      i + j
    }
    /* java当中的写法
    void int Sum_Two(int i, int j) {
      return i + j;
    }
     */
    //var sum = Sum_Two(1,2)
    //println(sum)
    println(Sum_Two(1,2))

  }


}